Programming languages frequently operate on software models having one or more attributes known as objects. A programming language can interact with an object using different persistence frameworks. A persistence framework can include data structures used to store values for the various attributes of an object and one or more processes for interacting with the stored object. Persistence frameworks can include, for example, relational databases and hierarchical storage systems. A relational database can store an object as a row of a table having a predefined number of columns, with each attribute of the object mapped to a column of the table. A hierarchical storage system can store an object as a node in a tree data structure resembling a file system, with each attribute of the object being mapped to a property of the node.
A hierarchical storage system can provide advantages over a relational database, such as increased flexibility and clarity for data handling in content management applications. For example, a hierarchical storage system can be used to store unstructured content that does not necessarily fit in a predefined schema, as opposed to a relational database that requires an object to conform to a data schema (i.e., the columns of a table). Thus, a hierarchical storage system can be better suited than a relational database for storing unstructured or semi-structured data such as web content.
However, developers of applications may be unfamiliar with the standards for hierarchical storage system and therefore may opt to develop applications for relational database systems rather than hierarchical storage system. For example, relational database systems can provide simple methods of handling the business logic of an application. Accordingly, the simplicity of developing applications configured to interact with relational database systems may dissuade developers from leveraging the advantages of hierarchical storage systems.